#pragma once

#include <list>
#include <vector>

using namespace std;

class CQuickSort
{
public:
	CQuickSort(void);
	~CQuickSort(void);

public:
	void pushDataToPool(const int i);
	void eraseDataInPool(const int i);
	void clearDataPool();

	void DoSort();
	int GetList(list<int>& out_list);

private:
	void _DoSortLoop();
	
	void _DoSortSn(const int iPosBegin, const int iPosEnd, const int iPosMiddle, bool bLeft);
	void _DoSortSn(vector<int>& vSubSn);

	void debugPrint();

private:
	vector<int> m_viPool;
	vector<int> m_vSortVector;
};

